1. Field of the Invention
The present invention generally relates to computer modeling and, more particularly, to the evaluation of expressions usually included in a computer model of a device or complex system including but not limited to business process models.
2. Description of the Prior Art
It has long been recognized that computers and data processors are particularly applicable to and unexcelled at repetitively performing a sequence of operations of arbitrary length and complexity. For that reason, simulation of physical systems to, in effect, allow observation of the performance of such systems under different sets of conditions has been a principal application of computers since the development of the earliest practical digital data processors. Computer simulation techniques have steadily increased in complexity and sophistication since that time to the point that modeling can presently be applied to highly complex business methods. For an enterprise to be competitive, the ability to perform predictive analysis on a large amount of data is very important to, for example, analyze a trend, determine thresholds and decision points and discover new opportunities. Such applications are currently referred to as business process modeling (BPM) and the capability of modeling complex business processes accurately is becoming an indispensable management tool with the number of business modeling applications increasing at a rate of more than 7% per year. Possibly as a result of such growth and levels of interest, numerous languages and programming methods have been developed to support and facilitate representing dynamic expressions in models. Among these languages and programming methods are Macromedia ColdFusion™ W3C XPath™, EXSLT™, Apache JEXL™ and JavaCC™, all of which are proprietary.
Modeling applications or, simply, models, to perform the function of simulation of a device or system and allow observation of the simulated device or system under differing conditions will, almost invariably, include one or more expressions which may be dynamically evaluated during the simulation. Such expressions are usually in the form of a string (e.g. “sqrt (b+c)”) and contain variables whose values are determined at runtime of the simulation. These expressions are developed by the programmer in the course of developing a given simulation/modeling application (sometimes referred to simply as “model”) and thus may be entirely unique to each application. As a practical matter, a developer of a modeling language or modeling tool must be certain that the language or tool is complete and operable independent of any other resources which may be available on any machine on which the tool or language is run. Therefore, the language or tool must, itself, support the representation and evaluation of expressions in accordance with its own rules and syntax. Accordingly, if one of the above proprietary languages is used for the modeling application, the developer must use vendor-specific syntax to represent the desired expression in the model while the proprietary language may be somewhat limited in computational features. Conversely, while it is known that many platforms include database managements systems (DBMS) which, in turn, include the capability of responding to queries and performing mathematical calculations in a standardized language such as Standard Query Language (SQL), a programmer or developer who may be highly skilled in a proprietary language may not be certain that such a capability will exist on a given platform on which the model may be run and may be less skilled in regard to programming in a standard language and/or the syntax and format required to embed standard language queries in an application otherwise written in a proprietary language.
Use of proprietary languages to quantitatively represent potentially complex device or system properties and/or behaviors with accuracy using a substantially unique syntax will often involve very steep learning curves and is subject to syntactical errors which may be difficult to detect. These difficulties for the developer of the model often lead to the writing of a special purpose evaluation engine which parses the expression string, substitutes values for variables performs a computation, returns a result and the like. Such evaluation engines are not predictable in regard to time required for execution of the evaluation (e.g. there is no guarantee that the amount of time required for execution will be acceptable; referred to as being “not scalable”) and which require impractical amounts of effort to port to different programming languages while it may be highly desirable, particularly for business process modeling (BPM) to execute the model or portions thereof at different nodes of a distributed network or system including many different and not necessarily compatible platforms and languages.